use piston_window::types::Color;
use piston_window::{rectangle, Context, G2d};


// 方块的大小
// 边长的大小
const BLOCK_SIZE: f64 = 25.0;

/// game_coord：这是游戏逻辑中的坐标，通常以网格的形式表示，类似于棋盘上的格子坐标。它通常是一个整数，表示在逻辑网格中的位置。
/// BLOCK_SIZE：这是每个游戏方块在屏幕上的大小。它是一个浮点数，通常以像素为单位，表示单个方块在屏幕上的宽度和高度。
pub fn to_coord(game_coord: i32) -> f64 {
    (game_coord as f64) * BLOCK_SIZE
}


// 棋盘坐标坐标 game_coord
pub fn to_coord_u32(game_coord: i32) -> u32 {

    // 浮点坐标 强转 u32
    to_coord(game_coord) as u32

}


// 画方块的代码
pub fn draw_block(color: Color, x: i32, y: i32, con: &Context, g: &mut G2d) {
    // 这里把游戏的逻辑坐标转换成屏幕坐标
    let gui_x = to_coord(x);
    let gui_y = to_coord(y);
    rectangle(
        color,
        [gui_x, gui_y, BLOCK_SIZE, BLOCK_SIZE],
        con.transform,
        g,
    );
}

// 画矩形
pub fn draw_rectangle(
    color: Color,
    x: i32,
    y: i32,
    width: i32,
    height: i32,
    con: &Context,
    g: &mut G2d,
) {
    let x = to_coord(x);
    let y = to_coord(y);
    rectangle(
        color,
        [
            x,
            y,
            BLOCK_SIZE * (width as f64),
            BLOCK_SIZE * (height as f64),
        ],
        con.transform,
        g,
    );
}
